#ifndef __EVENTJOYSTICK_HPP__
#define	__EVENTJOYSTICK_HPP__

#include <IEventReceiver.h>

#include "../EventBase.hpp"

namespace Event
{
    class EventJoystick :
    public EventBase
    {
    protected:
        /**
         * @fn       EventJoystick()
         * @brief    Contructor
         * @param    _timeToWait     time we have to wait before firing the event
         * @param    _nbFires        number of time we have to fire the event
         */
        EventJoystick(const irr::SEvent::SJoystickEvent& _joystickEvent, float _timeToWait = 0, int _nbFires = 0) :
        EventBase(EVENT_JOYSTICK, _timeToWait, _nbFires),
        m_joystickEvent(_joystickEvent)
        {
        }
    public:
        /**
         * @fn       EventJoystick()
         * @brief    Contructor
         * @param    _timeToWait     time we have to wait before firing the event
         * @param    _nbFires        number of time we have to fire the event
         */
        EventJoystick(void* _sender, const irr::SEvent::SJoystickEvent& _joystickEvent, float _timeToWait = 0, int _nbFires = 0) :
        EventBase(_sender, EVENT_JOYSTICK, _timeToWait, _nbFires),
        m_joystickEvent(_joystickEvent)
        {
        }

        /**
         * @fn       EventJoystick(const EventJoystick& orig)
         * @brief    Copy Contructor
         * @param    orig       Copy of the event we have to do
         */
        EventJoystick(const EventJoystick& orig) :
        EventBase(orig)
        {
        }

        /**
         * @fn       getJoystickEvent()
         * @brief    Getter on the joystick event
         * @return   the joystick event
         */
        irr::SEvent::SJoystickEvent getJoystickEvent()
        {
            return m_joystickEvent;
        }

        /**
         * @fn       ~EventJoystick()
         * @brief    Virtual Destructor
         */
        virtual ~EventJoystick()
        {
        }
    private:
        irr::SEvent::SJoystickEvent  m_joystickEvent;

    };

} //  namespace Event

#endif	/* __EVENTJOYSTICK_HPP__ */

